package com.richpay.basejava.base15;

/**
 * 二维数组的使用
 */
public class BinaryArray {
    public static void main(String[] args) {
        //二维数组的声明和实例化
        int[][] A = new int[4][5];
        System.out.println("A=" + A);//[[I@7852e922  [[:代表二维数组

        //二维数组(锯齿数组——每一项的元素个数不相等)的实例化和实例化
        int[][] B = new int[4][];//在声明多维数组时，
        // 必须指定最左边数组的大小，
        // 右边的可以不指定，
        // 在后续代码中继续指定

        B[0] = new int[2];
        B[1] = new int[10];
        B[2] = new int[4];
        B[3] = new int[12];//正确
        //B[3]={4,5,6};//错误这种写法不能应用在二维数组中
        B[3] = new int[]{4, 5, 6};//正确

        //二维数组的静态初始化
        int[][] C = {
                {5, 6, 7},
                {1, 2, 3},
                {8, 9, 10},
                {11, 2, 3, 4}
        };

        println(C);

    }

    /**
     * 采用双重循环遍历二维数组的示例代码
     *
     * @param A
     */
    static void print(int[][] A) {
        int len = A.length;//获取二维数组中第一维数组的大小
        for (int i = 0; i < len; i++) {
            //A[i].length:获取指定索引位对应的数组的大小
            for (int j = 0; j < A[i].length; j++) {
                System.out.print("A[" + i + "][" + j + "]=" + A[i][j] + ",");
            }
            System.out.println();
        }
    }

    /**
     * 采用增强for循环遍历二维数组
     *
     * @param A
     */
    static void println(int[][] A) {
        for (int[] a : A) {
            for (int i : a) {
                System.out.print(i + ",");
            }
            System.out.println();
        }
    }
}
